namespace test09 {
    // 类型推论
    // 声明了一个变量但是没有定义类型
    // ts 会在没有明确的指定类型的时候推测出一个类型，这就是类型推论
    // 如果你声明变量没有定义类型也没有赋值，这时候ts就会推断成any类型，可以进行任何操作

    // 类型别名
    // type 关键字（可以给一个类型定义一个名字）多用于符合类型
    // 定义类型别名
    type str = string
    let s: str = '我是小蔓'
    console.log(s); // 我是小蔓

    // 定义值的别名
    type value = boolean | 4 | '231'
    let d: value = true
    // 变量d 的值，只能是上面value 定义的值

    // 类型别名也可以是泛型
    // 同接口一样，类型别名也可以是泛型，我们可以添加类型参数并且在别名的右侧传入

    // 此处定义了一个泛型类型别名Container，它接收一个类型参数T，并将其应用于一个对象的value属性，
    // 这样，Container就可以用于创建包含任意类型的对象
    type Container<T> = { value: T }

    // 例如，使用Container创建一个包含字符串的容器
    let myStringContainer: Container<String> = {
        value: 'hello,typeScript!'
    }
    console.log(myStringContainer); // { value: 'hello,typeScript!' }

    // 例如，使用Container创建一个包含数字的容器
    let myNunberContainer: Container<number> = {
        value: 1244
    }
    console.log(myNunberContainer); // { value: 1244 }
    // // // // // // // // // // // // // // // // // // // // // // // // // // // 
  
}